const fs = require('fs')
const path = require('path')

const dirFileNameAndDirs = [] //定义一个数组存储

const dirName = path.resolve(__dirname, './MyFiles') //定义需要读取的目录名称

async function getDirFileAndDirs(dirname) { //这个函数用于传递一个目录,返回该目录下所有文件和目录数组
    const data = await fs.promises.readdir(dirname)
    console.log('dirname下所有的文件以及子目录', data)

    //数组方法foreach不会等待异步回调

    //    dirFileNameAndDirs.push(data) //将得到的数组添加到定义好的数组中
    //    await data.forEach(async (item)=>{//读取第一个目录下所有的文件信息,判断是否是是目录,如果是目录的话则再次调用该方法
    //     const itemState = await fs.promises.stat(path.resolve(dirname,item))
    //      if(itemState.isDirectory()){//如果是目录
    //         console.log(path.resolve(dirname,item),'是一个目录')
    //        await getDirFileAndDirs(path.resolve(dirname,item))
    //      }
    //    })
    for (const item of data) {
        const itemState = await fs.promises.stat(path.resolve(dirname, item))
        dirFileNameAndDirs.push(item)
        if (itemState.isDirectory()) {//如果是目录
            console.log(path.resolve(dirname, item), '是一个目录')
            await getDirFileAndDirs(path.resolve(dirname, item))
        }
    }
}


getDirFileAndDirs(dirName).then((data) => {
    console.log('所有的文件和文件夹', dirFileNameAndDirs)
})